﻿using System;
using System.Collections.Generic;
using System.Text;
using System.Threading.Tasks;
using SportsPlatform.Dto.PermissionManagement.UserInfo;
using SportsPlatform.Base;
using SportsPlatform.Query.PermissionManagement.BaseQuery;
using SportsPlatform.Query.PermissionManagement.UserInfo;
using Microsoft.AspNetCore.Mvc;

namespace SportsPlatform.PermissionManagement.IPermissionManagement
{
    /// <summary>
    /// 用户表管理
    /// </summary>
    public interface IUserInfoService
    {
        /// <summary>
        /// 登录获取信息
        /// </summary>
        /// <param name="query"></param>
        /// <returns></returns>
        Task<ResultDto<GetLoginUserInfoDto>> GetLoginUserInfo(GetLoginUserInfoQuery query);

        /// <summary>
        /// 获取角色对应功能列表
        /// </summary>
        /// <returns></returns>
        Task<ResultListDto<FunctionChildren>> GetFunctionChildren();

        /// <summary>
        /// 验证手机号是否存在
        /// </summary>
        /// <param name="query"></param>
        /// <returns></returns>
        Task<BaseResultDto> VerificationUserTel(VerificationUserTelQuery query);

        /// <summary>
        /// 更改用户密码
        /// </summary>
        /// <param name="query"></param>
        /// <returns></returns>
        Task<BaseResultDto> UpdateUserInfoPassWord(UpdateUserInfoPassWordQuery query);

        /// <summary>
        /// 批量/单个重置用户密码
        /// </summary>
        /// <param name="query"></param>
        /// <returns></returns>
        Task<BaseResultDto> ResetUserInfoPassword(ResetUserInfoPasswordQuery query);

        /// <summary>
        /// 批量/单个用户信息状态更改
        /// </summary>
        /// <param name="query"></param>
        /// <returns></returns>
        Task<BaseResultDto> StatusChangeUserInfo(StatusChangeUserInfoQuery query);

        /// <summary>
        /// 根据Id查询用户信息
        /// </summary>
        /// <param name="query"></param>
        /// <returns></returns>
        Task<ResultDto<GetUserInfoDto>> GetUserInfo(DeleteOrGetModelQuery deleteOrQueryModel);

        /// <summary>
        /// 分页获取用户信息列表
        /// </summary>
        /// <param name="query"></param>
        /// <returns></returns>
        Task<PagePagingDto<GetUserInfoListPageDto>> GetUserInfoListPage(GetUserInfoListPageQuery query);

        /// <summary>
        /// 新增用户信息
        /// </summary>
        /// <param name="query"></param>
        /// <returns></returns>
        Task<ResultByIdDto> AddUserInfo(AddUserInfoQuery query);

        /// <summary>
        /// 更新用户信息
        /// </summary>
        /// <param name="query"></param>
        /// <returns></returns>
        Task<BaseResultDto> UpdateUserInfo(UpdateUserInfoQuery query);

        /// <summary>
        /// 根据Id删除用户信息
        /// </summary>
        /// <param name="query"></param>
        /// <returns></returns>
        Task<BaseResultDto> DeleteUserInfo(DeleteOrGetModelQuery deleteOrQueryModel);

        /// <summary>
        ///是否启用
        /// </summary>
        /// <param name="query"></param>
        /// <returns></returns>
        Task<BaseResultDto> IsStatesUserInfo(IsStatesdModel query);
      
        /// <summary>
        /// 退出登录
        /// </summary>
        /// <param name="token">token</param>
        /// <returns>ActionResult</returns>
        Task<ResultDto<bool>> Logout(string token);
    }
}
